/** @jsxImportSource @emotion/react */
import * as React from "react";
import {Button, Text, TextArea, useToast,} from "customize-easy-ui-component";
import {InspectRecordLayout, InternalItemProps, useItemInputControl} from "../../common/base";
import {useMedia} from "use-media";
import {assertNamesUnique} from "../../common/eHelper";
import {EditStorageContext} from "../../StorageContext";
import {itemA评定汇} from "./AppendixPage";
import {render容类别} from "../../common/render";
import {itemA下结论} from "./Conclusion";
import {config料审查, itemA料审查} from "./MaterialReview";
import {itemA宏观项} from "./Macroscopic";
import {config超声波, itemA超声波} from "./AutoUltrasonic";
import {config附件仪2, itemA安附结} from "./SafetyAccesor";
import {config水压试, itemA水压试} from "./HydraulicTest";
import {config外水压试, itemA外水压} from "./ExterHydraulic";

export const config设备概况 = [
    [['设备名称', '_$设备名称'], ['检验类别', '_$检验类别',],  ],
    [['容器类别','_$设备品种',render容类别], ['设备代码','_$设备代码'],  ],
    [['产品编号', '_$出厂编号'], ['使用登记证编号', '_$使用证号'],],
    [['制造单位', '_$制造单位'],  ],
    [['使用单位', '_$使用单位'], ],
    [['设备使用地点', '_$设备使用地点']],
    [['使用单位组织机构代码','_$使用单位信用码'], ['邮政编码', '_$使用单位邮编'] ],
    [['安全管理人员', '安全员'], ['联系电话', '安全员电'], ],
    [['设计使用年限','_$设计年限', '年'], ['投入使用日期', '_$投用日期'],],
    [['主体结构型式','_$主体结构'], ['运行状态','_$运行状态'] ],
//拆分点：       //orc.是换热? '换热面积':'容积'}
    [['总容积', '_$容积换热', 'm³'], ['瓶体外径', {n:'瓶外径', u:'mm'}],  ],
    //容器的温度字段太多了：就缺没有”设计温度“；
    [['设计压力', '_$设计压力', 'MPa'], ['设计温度',{n:'设计温', u:'℃'}], ],
    [['工作压力', '_$工作压力', 'MPa'],  ['工作温度', '_$工作温度', '℃'],  ],
    [['充装介质', '_$工作介质',], [' ',{r:' '}] ],
];


export const tail宏观= <Text css={{"@media print": {fontSize: '0.75rem'}}}>
    注：检验结果栏中，打“√”表示该项目无问题或者合格，打“×”表示该项目有问题或者不合格，填写“无此
    项”的或划“/”表示实际没有的检验项目，划“－”表示该项目无法检验。
</Text>;

/**开启编制时的：默认值初始化操作。  若打印：本编辑器全部都不显示。
 * */
export const EntranceSetup =
React.forwardRef((
    {children, show, alone = true, repId, verId, rep}: InternalItemProps, ref
) => {
    const atPrint = useMedia('print');
    const toast = useToast();
    const doCheckNames = React.useCallback((verId: string) => {
        const result = assertNamesUnique([{value: rep?.tzFields},
            {value: config设备概况, type:'esnt'},
            {value:[...itemA下结论, ...itemA评定汇, ]}, {value: config料审查, type:'esnt'},
            {value:[...itemA料审查, ...itemA宏观项, ]}, {value: config超声波, type:'esnt'},
            {value:[...itemA超声波, ...itemA安附结, ]}, {value: config附件仪2, type:'esnt'},
            {value: config水压试, type:'esnt'},   {value:[...itemA水压试,]},
            {value: config外水压试, type:'esnt'},   {value:[...itemA外水压,]},
            {value:['Projects',  ]} ]);
        toast({title: "完成！", subtitle: result ? "没发现冲突" : "测试开关没开", intent: "success"});
    }, [rep,toast]);
    const {storage, setStorage} =React.useContext(EditStorageContext) as any;
    const getInpFilter = React.useCallback((par: any) => {
        const {_tblFixed, } =par||{};
        return {_tblFixed, };
    }, []);
    const {inp, setInp} = useItemInputControl({ref});
    if (atPrint) return null;
    else return (
        <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show}
                             alone={alone} label={'初始化本报告，默认值配置等'}>
            {process.env.REACT_APP_TEST==='true' && <><div>
                <Text variant="h5">构建开发模板时的工具：校验模板的存储name冲突；</Text>
                <Button intent='primary' onPress={() => doCheckNames(verId!)}>校验模板name唯一性</Button>
                <Text variant="h5">设置待测试表格的各列宽度：</Text>
                <TextArea value={storage?._tblFixed || ''} rows={2} onChange={e =>{
                    JSON.parse(e.currentTarget.value??'[]');
                    setStorage({ ...storage, _tblFixed: e.currentTarget.value || undefined}); }}/>
            </div>
            </>
            }
            <hr/>
        </InspectRecordLayout>
    );
});

//testlogcfg.ses::  "contlist":全部可能页{没有附带页的}； "mainpage"扣除"addpage"后的才是必须页面。  页面装配顺序看"contlist":[]？
export const Projects记录 = [
    {name: '定期检验结论报告', do: true, ha: 'Conclusion'},
    {name: '检验结果评定汇总', do: true, na:false, ha: 'AppendixPage'},
    {name: '资料审查报告', do: true,ha: 'MaterialReview'},
    {name: '宏观检验报告', do: true,ha: 'Macroscopic'},
    {name: '壁厚测定报告', ha: 'rp_thickm_'},
    {name: '超声波检测报告', ha: 'AutoUltrasonic'},
    {name: '磁粉检测报告', ha: 'rp_magnetic_'},
    {name: '渗透检测报告', ha: 'rp_permeation_'},
    {name: '声发射检测报告', ha: ''},
    {name: '光谱分析报告', ha: ''},
    {name: '硬度检测报告', ha: 'rp_hardness_'},
    {name: '金相分析报告', ha: ''},
    {name: '安全附件检验报告', do: true,ha: 'SafetyAccesor'},
    //【预留】PDF是 生成的2个表格?addpage：[] "全自动超声波检测报告", "外测法水压试验报告",  ？没有例子
    {name: '水压试验报告', ha: 'HydraulicTest'},
    //？仅在 原始记录的：
    {name: '外测法水压试验报告', ha: 'ExterHydraulic', na:true},
    {name: '气密性试验报告', ha: 'rp_gasproof_'},
];
